package main

import "fmt"

//#link:https://leetcode-cn.com/problems/valid-parentheses/
func main() {
	s := "()"
	fmt.Println(isValid(s))
}

//给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
func isValid(s string) bool {
	sByte := []byte(s)
	stack := make([]byte, 0)
	stack = append(stack, sByte[0])
	for i := 1; i < len(sByte); i++ {
		switch letter := sByte[i]; letter {
		case '(', '{', '[':
			stack = append(stack, letter)
		default:
			if len(stack) > 0 {
				popLetter := stack[len(stack)-1]
				stack = stack[:len(stack)-1]
				switch letter {
				case ')':
					if popLetter != '(' {
						return false
					}
				case '}':
					if popLetter != '{' {
						return false
					}
				case ']':
					if popLetter != '[' {
						return false
					}
				}

			} else {
				return false
			}
		}
	}
	return len(stack) == 0
}
